package offer_2._67_strToInt;

public class strToInt {
    public int _strToInt(String str) {
        str = str.trim();
        if (str.length() == 0)
            return 0;
        int flag = 1;
        int index = 0;
        char[] ch = str.toCharArray();
        if (ch[0] == '-') {
            flag = -1;
            index++;
        } else if (ch[0] == '+') {
            index++;
        }
        int ans = 0;
        for (int i = index; i < ch.length; i++) {
            if (Character.isDigit(ch[i])) {
                int cur = ch[i] - '0';
                // 判断是否溢出
                if (flag == 1) {
                    if ((Integer.MAX_VALUE / 10 < ans) || (Integer.MAX_VALUE / 10 == ans && cur > 7)) {
                        ans = Integer.MAX_VALUE;
                        break;
                    }
                } else {
                    if (Integer.MIN_VALUE / 10 > -ans || (Integer.MIN_VALUE / 10 == -ans && cur > 8)) {
                        ans = Integer.MIN_VALUE;
                        break;
                    }
                }
                ans = ans * 10 + cur;
            } else {
                break;
            }
        }
        return ans * flag;

    }
}
